package proteus.dao;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import proteus.excepcion.DAOExcepcion;
import proteus.modelo.Caracteristica;
import proteus.modelo.Promocion;
import proteus.util.ConexionBD;


	public class PromocionDAO extends BaseDAO{	
		
		public void insertar(Promocion vo) throws DAOExcepcion {
			System.out.println("PromocionDAO: insertar(Promocion vo)");
			String query = "INSERT INTO promocion(noPromocion, poDescuento) VALUES (?, ?)";
			Connection con = null;
			PreparedStatement stmt = null;
			try {
				con = ConexionBD.obtenerConexion();
				stmt = con.prepareStatement(query);
				stmt.setString(1, vo.getNoPromocion());
				stmt.setDouble(2, vo.getPoDescuento());
				int i = stmt.executeUpdate();
				if (i != 1) {
					throw new SQLException("No se pudo insertar la promocion");
				}
			} catch (SQLException e) {
				System.err.println(e.getMessage());
				throw new DAOExcepcion(e.getMessage());
			} finally {
				this.cerrarStatement(stmt);
				this.cerrarConexion(con);
			}
		}
//		LISTAR PROMOCION
		public Collection<Promocion> listarPromocion() throws DAOExcepcion {
			System.out.println("PromocionDAO: listarPromocion()");
			Collection<Promocion> c = new ArrayList<Promocion>();
			Connection con = null;
			PreparedStatement stmt = null;
			ResultSet rs = null;
			try {	        
				con = ConexionBD.obtenerConexion();
				String query="Select coPromocion, noPromocion from promocion order by noPromocion";
				stmt = con.prepareStatement(query);
				rs = stmt.executeQuery();
				while (rs.next()) {
					Promocion vo = new Promocion();
					vo.setCoPromocion(rs.getInt("coPromocion"));
					vo.setNoPromocion(rs.getString("noPromocion"));
					c.add(vo);
				}
			} catch (SQLException e) {
				System.err.println(e.getMessage());
				throw new DAOExcepcion(e.getMessage());
			} finally {
				this.cerrarResultSet(rs);
				this.cerrarStatement(stmt);
				this.cerrarConexion(con);
			}
			return c;
		}
		
		
	}